A filosofia da Sintaxe Natural argumenta que tipos definidos pelo usuário devem se comportar como cidadãos de primeira classe. Ao implementar sobrecarga de operadores, permitimos que as classes usem a notação padrão (como + ou ==), o que reduz a carga cognitiva e atende ao princípio da menor surpresa.
1. Anatomia e Disposição
Um operador é uma função com um nome especial: a palavra-chave operador seguida por um símbolo. Um operador unário tem um operando, enquanto um operador binário tem dois. Quando definido como um função membro, o operando à esquerda liga-se ao ponteiro implícito this (a.operator+(b)). Como um não membro, ambos são explícitos (operador+(a, b)).
2. Restrições e Ética
O C++ evita a "vandalismo da linguagem": você não pode criar novos símbolos (por exemplo, **) ou redefinir operações para tipos embutidos (por exemplo, int + int). A precedência e a associação são imutáveis. Princípio arquitetônico: Classes definindo == integrar-se facilmente com algoritmos da biblioteca como std::find.